import request from '@/utils/request';
import type { BaseBeanModel, ResponsePageData } from '@/api/model/baseModel';
import type { downloadParam } from '@/utils/download-util';
import { downloadSysFile } from '@/utils/download-util';
const basePath = '/appsys/log/AppLogRest';
export interface SysLogDto extends BaseBeanModel {
  /** SYS_APPLICATION_ID */
  sysApplicationId?: string;
  /** SYSLOG_USERNAME */
  syslogUsername?: string;
  /** 操作时间 */
  syslogTime?: any;
  syslogTimeBegin?: any;
  syslogTimeEnd?: any;
  /** 操作人IP */
  syslogIp?: string;
  /** 操作类型 */
  syslogOp?: string;
  /** 模块名称 */
  syslogModule?: string;
  /** 日志类型 */
  syslogType?: string;
  /** SYSLOG_IS_GD */
  syslogIsGd?: string;
  /** 操作结果 */
  syslogResult?: string;
  /** SYSLOG_CONTENT */
  syslogContent?: string;
  /** SYSLOG_TABLE */
  syslogTable?: string;
  /** SYSLOG_FORMID */
  syslogFormid?: string;
  /** SYSLOG_SECRETLEVEL */
  syslogSecretlevel?: string;
  /** 日志内容 */
  syslogTitle?: string;
  /** 操作人 */
  syslogUsernameZh?: string;
  /** 操作人登录名 */
  syslogUserno?: string;
}

/**
 * 获取分页数据
 * @param param queryParam 系统请求参数
 * @param  num -1 接口拼接数据
 * @returns 列表数据及总条数
 */
export function listSysLogByPage(param, num: string): Promise<ResponsePageData<SysLogDto>> {
  return request.post(`${basePath}/search-by-page/v1/${num}`, param);
}

/**
 * 获取归档下拉列表
 * @returns 当前选中的归档日志及其列表数据
 */
export function listSysLogArchived() {
  return request.get(`${basePath}/getSysLogArchived/v1`);
}

/**
 * 获取日志类型
 * @returns 日志类型数据
 */
export function getSysLogType() {
  return request.get(`${basePath}/getSysLogType/v1`);
}

/**
 * 日志归档
 * @param param queryParam 系统请求参数
 * @returns 成功或失败的保存状态
 */
export function saveArchiveLog(param) {
  return request.post(`${basePath}/archiveLog/v1`, param);
}

/**
 * 通过日志归档获取列表数据
 * @param param queryParam系统请求参数
 * @param syslog 接口拼接参数
 * @returns 当前日志对应的列表数据
 */
export function listSysLogByArchiveLog(param, syslog) {
  return request.post(`${basePath}/search-by-page/v1/${syslog}`, param);
}

/** 导出 */
export function exportExcel(param: any) {
  const download = {
    url: '/appsys/common/excelExport/log/v1',
    data: param,
    method: 'post'
  } as downloadParam;
  return downloadSysFile(download);
}
